#ifndef MEMBITMAP_L
#define MEMBITMAP_L
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "copyright.h"
#include "utility.h"
#include "openfile.h"
#define NumPhysPages 32

#define PageSize 128
class MemBitMap
{

public:
//虚拟页表的结构体
struct MemBit
{
int isempty;//是否为空，1－是，2－否
int counter;//被访问次数
int time;//上次访问时间
int* owner;//所属线程(Thread*)
};


//构造函数
MemBitMap(int nitems);//// Initialize a membitmap, with "nitems"
~MemBitMap();	// De-allocate menbitmap
void Set(int which);	//设置页框占用
void Clear(int which);	//设置允许占用
bool Test(int which);	//该页框占用情况
int Find();	//  功能：查找空闲页，若没有返回－1
int NumClear();	//  功能：返回当前所有空闲页数目
void SetCounter(int which,int n);   //设置访问计数器
int GetCounter(int which);	//获取已访问次数
void SetTime(int which,int t);	//设置为最近访问时间
int GetTime(int which);	//获取最近访问时间
void SetOwner(int which,int* own);//设置所属线程
int* GetOwner(int which);	//获取所属线程
private:
MemBit *map;
//ThreadsStatus *stats;
int num;	//页表总数
};

#endif

